#ifndef __SIMPLE_READER_HH__
#define __SIMPLE_READER_HH__
#include <iosfwd>
#include "data_structures.hh"

/*! \brief read the adventure from file

  Reads all data for an adventure so that it is in a playable state.

  \param in input stream to read from
  \return Adventure object
*/
Adventure read_from_file(std::istream& in);

/*! \brief save the game into a stream 
 *
 * Save the game data so that the game can be restored later on. The
 * whole data is saved as there are commands like adding an exit to a
 * room that make it necessary to save everything.
 *
 * \param adv Adventure object
 * \param out output stream
 * \return the modified output stream
 *  
 */
std::ostream& write_to_file(const Adventure &adv, std::ostream &out);

/*! \brief just save the messages to stream
 * \param adv Adventure object
 * \param out output stream
 * \return the modified outout stream
 */
std::ostream& write_msgs(const Adventure &adv, std::ostream &out);

#endif
